package cn.tedu.charging.order.controller;

import cn.tedu.charging.common.pojo.JsonResult;
import cn.tedu.charging.order.pojo.param.OrderAddParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.lang.NonNullApi;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.spring.web.json.Json;

//@Slf4j是lombok依赖中有的
@Slf4j
@RestController
//@RequestMapping作用是定义请求接口地址
@RequestMapping("order")
//knife4j依赖来生成接口文档
@Api(tags = "订单模块")
public class OrderController {
    @Autowired
    private OrderService orderService;
    //新增要用postingmapping
    @PostMapping ("create")
    @ApiOperation(value = "创建订单")
    //入参应该有Param
    //@RequestBody 注解在 Spring Framework 中用于指示一个方法参数应该绑定到HTTP请求的正文（body）。
    // 具体来说，当客户端通过POST或其他支持携带请求体的HTTP方法发送数据时，
    // 具体来说，当客户端通过POST或其他支持携带请求体的HTTP方法发送数据时，
    // 这些数据通常以JSON、XML等格式存在于请求体中。@RequestBody 的作用就是将这些请求体中的数据转换成Java对象。

    //入参是OrderAddParam 出参是JsonResult
    public JsonResult createOrder(@RequestBody OrderAddParam orderAddParam){
        log.debug("创建订单-入参:{}",orderAddParam);
        log.debug("创建订单-orderService:入参:{}",orderAddParam);
    String orderNo = orderService.createOrder(orderAddParam);
        log.debug("创建订单-orderService:入参:{},出参{}",orderAddParam,orderNo);
        JsonResult<String> result = new JsonResult<>();
        result.setData(orderNo);
        result.setCode(2000);
        result.setMessage("创建订单成功");
        log.debug("创建订单入参:{},出参:{}",orderAddParam,result);
        return result;
    }

}
